using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
namespace BO.SMS
{
    public class clsVOMessagem
    {
        public static DataView DtMessagem;
        public enum EnTpMessage
        {
            LINK_ENVIO = 1,
            TIPO_R_Z_VALIDO = 2,
            TIPO_I_VALIDO = 3,
            AJUDA = 4,
            ERRO = 5,
            ERRO_APELIDO = 6,
            ERRO_PRODUTO = 7,
            ERRO_TP_VISITA = 8,
            ERRO_CADASTRO_INVALIDO = 9,

        }
        public clsVOMessagem(clsVOSMSCorretor Corretor)
        {
            //criar dtMessagem
            if (DtMessagem == null)
            {
                DtMessagem = DA.SMS.clsDaSMS.GetMessagens();
                
            }
            
        }
        public string getMessage(List<EnTpMessage> tipo, clsVOSMSCorretor VOCorretor)
        {
            string Message = "";
            if (tipo.Count != 0)
            {
                foreach (EnTpMessage tpMsg in tipo)
                {
                    Message = getMessage(tpMsg,Message,  VOCorretor);   
                }
                Message = Message.Replace(" e @@ERROPRODUTO@@", "");
                Message = Message.Replace("@@ERROPRODUTO@@ e ", "");
                Message = Message.Replace(" e @@ERROAPELIDO@@", "");
                Message = Message.Replace("@@ERROAPELIDO@@ e ", "");
                Message = Message.Replace(" e @@ERROTPVISITA@@", "");
                Message = Message.Replace("@@ERROTPVISITA@@ e ", "");
            }
            else//montar link
            {
                Message = getMessage(EnTpMessage.LINK_ENVIO, VOCorretor);
            }
            return Message;
        }
        public string getMessage(EnTpMessage tipo, clsVOSMSCorretor VOCorretor)
        {
            return getMessage(tipo, "", VOCorretor);
        }
        public string getMessage(EnTpMessage tipo, string Message, clsVOSMSCorretor VOCorretor)
        {
            switch (tipo)
            {
                case EnTpMessage.LINK_ENVIO:
                    Message = getMSG((int)tipo);
                    if (VOCorretor.TP_VISITA.ToUpper() == "I")
                    {
                        Message = Message.Replace("@@MESSAGE@@", getMSG((int)EnTpMessage.TIPO_I_VALIDO));
                    }
                    else if (VOCorretor.TP_VISITA.ToUpper() == "R"
                        || VOCorretor.TP_VISITA.ToUpper() == "Z")
                    {
                        Message = Message.Replace("@@MESSAGE@@", getMSG((int)EnTpMessage.TIPO_R_Z_VALIDO));
                    }
                    else
                    {
                        Message = "";
                    }
                    break;
                case EnTpMessage.ERRO:
                    Message = getMSG((int)EnTpMessage.LINK_ENVIO);
                    Message = Message.Replace("@@MESSAGE@@", getMSG((int)tipo));
                    Message = Message.Replace("@@AJUDA@@", getMSG((int) EnTpMessage.AJUDA));
                    break;
                case EnTpMessage.ERRO_APELIDO:
                    if (Message.Trim() == "")
                    {
                        Message = getMSG((int)EnTpMessage.LINK_ENVIO);
                        Message = Message.Replace("@@MESSAGE@@", getMSG((int)EnTpMessage.ERRO_CADASTRO_INVALIDO));
                    }
                    Message = Message.Replace("@@ERROAPELIDO@@", getMSG((int)EnTpMessage.ERRO_APELIDO));
                    Message = Message.Replace(" e e ", " ");
                    break;
                case EnTpMessage.ERRO_PRODUTO:
                    if (Message.Trim() == "")
                    {
                        Message = getMSG((int)EnTpMessage.LINK_ENVIO);
                        Message = Message.Replace("@@MESSAGE@@", Message = getMSG((int)EnTpMessage.ERRO_CADASTRO_INVALIDO));
                    }
                    Message = Message.Replace("@@ERROPRODUTO@@", getMSG((int)EnTpMessage.ERRO_PRODUTO));
                    Message = Message.Replace(" e e ", " ");
                    break;
                case EnTpMessage.ERRO_TP_VISITA:
                    if (Message.Trim() == "")
                    {
                        Message = getMSG((int)EnTpMessage.LINK_ENVIO);
                        Message = Message.Replace("@@MESSAGE@@", Message = getMSG((int)EnTpMessage.ERRO_CADASTRO_INVALIDO));
                    }
                    Message = Message.Replace("@@ERROTPVISITA@@", getMSG((int)EnTpMessage.ERRO_TP_VISITA));
                    Message = Message.Replace(" e e ", " ");
                    break;
                case EnTpMessage.AJUDA:
                    if (Message.Trim() == "")
                    {
                        Message = getMSG((int)EnTpMessage.LINK_ENVIO);
                        Message = Message.Replace("@@MESSAGE@@", Message = getMSG((int)EnTpMessage.AJUDA));

                    }
                    break;
                default:
                    Message = "";
                    break;
            }
            return Message;
        }
        private string getMSG(int ID)
        {
            DtMessagem.RowFilter = "";
            if (DtMessagem.Count != 0)
            {
                DtMessagem.RowFilter = "ID_SMS_MESSAGEM = "+ID.ToString();
                if (DtMessagem.Count == 1)
                {
                    return DtMessagem[0]["DS_MESSAGEM"].ToString();
                }
            }
            return "";
        }
        
    }
}
